import request from "@/utils/request";

const IMPORTXML_BASE_URL = "/api/v1/importXmls";

const ImportXmlAPI = {
  /** 获取文章导入分页数据 */
  getPage(queryParams?: ImportXmlPageQuery) {
    return request<any, PageResult<ImportXmlPageVO[]>>({
      url: `${IMPORTXML_BASE_URL}/page`,
      method: "get",
      params: queryParams,
    });
  },
  /**
   * 获取文章导入表单数据
   *
   * @param id ImportXmlID
   * @returns ImportXml表单数据
   */
  getFormData(id: number) {
    return request<any, ImportXmlForm>({
      url: `${IMPORTXML_BASE_URL}/${id}/form`,
      method: "get",
    });
  },

  /** 添加文章导入*/
  add(data: ImportXmlForm) {
    return request({
      url: `${IMPORTXML_BASE_URL}`,
      method: "post",
      data: data,
    });
  },

  /**
   * 更新文章导入
   *
   * @param id ImportXmlID
   * @param data ImportXml表单数据
   */
  update(id: number, data: ImportXmlForm) {
    return request({
      url: `${IMPORTXML_BASE_URL}/${id}`,
      method: "put",
      data: data,
    });
  },

  /**
   * 批量删除文章导入，多个以英文逗号(,)分割
   *
   * @param ids 文章导入ID字符串，多个以英文逗号(,)分割
   */
  deleteByIds(ids: string) {
    return request({
      url: `${IMPORTXML_BASE_URL}/${ids}`,
      method: "delete",
    });
  },

  /**
   * 申请文章导入
   *
   * @param id 文章导入ID
   */
  applyForById(id: string) {
    return request({
      url: `${IMPORTXML_BASE_URL}/${id}/applyfor`,
      method: "put",
    });
  },

  /** 获取导入过程分页数据 */
  getProcessPage(queryParams?: ImportProcessPageQuery) {
    return request<any, PageResult<ImportProcessPageVO[]>>({
      url: `${IMPORTXML_BASE_URL}/importProcesss/page`,
      method: "get",
      params: queryParams,
    });
  },

  /**
   * 作废文章导入
   *
   * @param id ImportXmlID
   */
  cancelById(id: number) {
    return request({
      url: `${IMPORTXML_BASE_URL}/${id}/cancel`,
      method: "put",
    });
  },

  /**
   * 入库确认
   *
   * @param id ImportXmlID
   * @param data ImportXml表单数据
   */
  inLib(id: number, data: ImportProcessContentForm) {
    return request({
      url: `${IMPORTXML_BASE_URL}/${id}/inlib`,
      method: "put",
      data: data,
    });
  },
};

export default ImportXmlAPI;

/** 文章导入分页查询参数 */
export interface ImportXmlPageQuery extends PageQuery {
  /** 搜索词 */
  searchTerms?: string;
  /** 状态 */
  status?: number;
  /** 开始时间 */
  createTime?: [string, string];
  /** 选题Id */
  topicId?: string;
}

/** 文章导入表单对象 */
export interface ImportXmlForm {
  id?: number;
  /** 选题Id */
  topicId?: number;
  /** 来源网站 */
  fromSite?: string;
  /** 搜索词 */
  searchTerms?: string;
  /** 内容 */
  content?: string;
  /** 确认类型 1 入库  2 回撤 */
  targetType?: number;
  /** 回撤原因 */
  reason?: string;
}

/** 文章导入表单对象 */
export interface ImportProcessContentForm {
  id?: number;
  /** 确认类型 1 入库  2 回撤 */
  targetType?: string;
  /** 回撤原因 */
  content?: string;
}

/** 文章导入分页对象 */
export interface ImportXmlPageVO {
  id?: number;
  /** 来源网站 */
  fromSite?: string;
  /** 搜索词 */
  searchTerms?: string;
  /** 内容 */
  content?: string;
  /** 已入库数 */
  newArticlesNum?: number;
  /** 未入库数 */
  oldArticlesNum?: number;
  /** 状态：
            0 入库前
            1 已申请
            2 已执行
            3 已撤回
            4 已作废 */
  status?: number;
  /** 建立时间 */
  createTime?: Date;
  /** 建立人 */
  createBy?: number;
  /** 修改时间 */
  updateTime?: Date;
  /** 修改人 */
  updateBy?: number;
  /** 逻辑删除 */
  isDeleted?: number;
}

/** 导入过程分页查询参数 */
export interface ImportProcessPageQuery extends PageQuery {
  /** 搜索词 */
  searchTerms?: string;

  /** 处理状态 */
  status?: number;

  /** 开始时间 */
  createTime?: [string, string];
}

/** 导入过程表单对象 */
export interface ImportProcessForm {
  /** 编号 */
  id?: number;
  /** 文章导入id */
  importXmlId?: number;
  /** 内容 */
  content?: string;
}

/** 导入过程分页对象 */
export interface ImportProcessPageVO {
  /** 编号 */
  id?: number;
  /** 文章导入id */
  importXmlId?: number;
  /** 状态 */
  status?: number;
  /** 状态名称 */
  statusName?: string;
  /** 操作人 */
  operatorBy?: number;
  /** 操作人名称 */
  operatorName?: string;
  /** 操作时间 */
  operatorTime?: Date;
  /** 内容 */
  content?: string;
}
